<?php
/**
 * Module:  Data
 * About:   Модель - Тип данных
 * Author:  Vlad Andreev <php.vlad@gmail.com>
 **/

namespace Data;

class DataType extends \Control\Model {
    
    public function __construct() {
        
        parent::__construct();
        
        $this->repository = $this->em->getRepository('Data\Entities\DataType');
    }
    
    // Сохранить
    public function save($data, $id = null) {
        
        if(!empty($id))
            $item = $this->find($id);
        
        if(empty($item))
            $item = new \Data\Entities\DataType;
        
        $entityFields = array_keys(get_object_vars($item));
        
        $data['active'] = (!empty($data['active'])) ? 1 : 0;
        
        if (!empty($data['name']) && $data['name'] != $item->name) {
            /* ToDo
            *
            *  Обновить значение @data_name всех полей этого типа данных
            *
            *  Но лучше, связать поля с типом, не по названию, а по идентификатору.
            */
        }
        
        foreach($data as $field => $value)
            if (in_array($field, $entityFields))
                $item->$field = $value;
        
        $this->em->persist($item);
        $this->em->flush();
        
        if (empty($item->num)) {
            $item->num = $item->id;
            
            $this->em->persist($item);
            $this->em->flush();
        }
        
        return $item->id;
    }
    
    public function delete($id) {
        
        parent::delete($id);
        
        /* ToDo
         *
         * Удалить все поля этого типа данных
         */
    }
}